Reference
- 문제 출처 - HackerRank
- 파이썬 연습 - Practice - Python
개인적인 생각과 상상으로 작성한 내용들이 포함되어 있습니다
문제를 풀고 Discussion Tab을 참고하며 코드 스타일을 개선하려고 노력하고자 합니다
HackerRank
Sets
No Idea!
문제 : 비교를 위한 배열(N) 하나와 서로소 집합 A, B가 있을 때, N의 원소가 A에 있으면 happiness +1, B에 있으면 happiness -1
입력 : 원소 수 n, m을 입력; 차례로 N 배열의 n개 원소와 집합 A, B의 m개 원소를 입력
출력 : happiness의 값
예제 : N 배열 - (1, 5, 3) A 집합 - (3, 1) B 집합 - (5, 7)
A 집합으로 인해 happiness +2, B 집합으로 인해 happiness -1, 최종 happiness = 1
element in set_a
표현으로 집합안에 원소가 존재하는지 확인할 수 있음
if **name** == '**main**': |
굳이 int 형으로 변환하지 않아도 됨
n, m = input().split() |
Set .add()
문제 : Rupal이 방문한 나라의 이름을 출력(중복 삭제)
입력 : 반복할 횟수 n을 입력; 나라 이름을 횟수만큼 반복해서 입력
출력 : 총 나라의 개수
예제 : 7번 다른 나라를 방문했는데 UK와 France는 중복됨; 즉 distinct country는 5가 됨
element in set_a
표현으로 집합안에 원소가 존재하는지 확인할 수 있음
if **name** == '**main**': |
Set .discard(), .remove() & .pop()
문제 : 비교를 위한 배열(N) 하나와 서로소 집합 A, B가 있을 때, N의 원소가 A에 있으면 happiness +1, B에 있으면 happiness -1
입력 : 원소 수 n을 입력; 집합 s의 원소들 입력(모두 양의 정수, 9보다 작거나 같음); 명령어 수 N을 입력; 명령어 입력;
출력 : 최종 집합 s의 원소들 합
예제 : N 배열 - (1, 5, 3) A 집합 - (3, 1) B 집합 - (5, 7)
A 집합으로 인해 happiness +2, B 집합으로 인해 happiness -1, 최종 happiness = 1
9
1 2 3 4 5 6 7 8 9
10
pop
remove 9
discard 9
discard 8
remove 7
pop
discard 6
remove 5
pop
discard 5
4
eval()
함수를 사용하면 쉽게 해결 가능
if **name** == '**main**': |
Set .union() Operation
입력 : 학생 수 n 입력; 영어 신문을 구독하는 학생 번호 입력; 학생 수 b 입력; 프랑스 신문을 구독하는 학생 번호 입력
출력 : 영어 신문, 프랑스 신문 둘 중 하나라도 구독하는 학생 수
예제 : 영어 신문 구독하는 학생 번호 - (1 2 3 4 5 6 7 8 9) 프랑스 신문 - (10 1 2 3 11 21 55 6 8)
하나라도 구독하는 학생 번호 - (1 2 3 4 5 6 7 8 9 10 11 21 55)
union()
함수를 사용해서 합집합을 구함
if **name** == '**main**': |
Set .intersection() Operation
입력 : 이전 문제와 같음
출력 : 영어 신문, 프랑스 신문 둘 다 구독하는 학생 수
예제 : 둘 다 구독하는 학생 번호 - (1 2 3 6 8)
intersection()
함수를 사용해서 합집합을 구함
if **name** == '**main**': |
Set .difference() Operation
입력 : 이전 문제와 같음
출력 : 영어 신문만 구독하는 학생 수
예제 : 영어 신문만 구독한 학생 번호 - (4 5 7 9)
difference()
함수를 사용안해도 -
해서 구할수도 있다
if **name** == '**main**': |
Set .symmetric_difference() Operation
입력 : 이전 문제와 같음
출력 : 영어 신문만 구독하거나 프랑스 신문만 구독한 학생 수
예제 : 둘 다 구독하는 학생 번호 - (4 5 7 9 10 11 21 55)
symmetric_difference()
함수를 사용
if **name** == '**main**': |